package com.woniuxy.commons.util;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;

import java.security.Key;
import java.util.Date;
import java.util.Map;

public class JwtUtil {
    //自定义秘钥
    static String secretKey = "ksaasfdasdfadsfwfrasdfsadffcasijfasadfasfdlkfjlasjflksajfd";
    
    /**
     * 生成JWT Token
     *
     * @param body             要包含在Token中的用户信息
     * @param expiresInMinutes Token的有效时长（分钟）
     * @return 生成的Token字符串
     */
    public static String createToken(Map<String, Object> body, Integer expiresInMinutes) {
        Key key = Keys.hmacShaKeyFor(secretKey.getBytes());
        Date expirationDate = new Date(System.currentTimeMillis() + expiresInMinutes * 60 * 1000);
        return Jwts.builder().setClaims(body).setExpiration(expirationDate).signWith(key).compact();
    }
    
    /**
     * 解析JWT Token
     *
     * @param token 要解析的Token字符串
     * @return 解析出的Token的Claims对象，包含了用户信息等内容
     */
    public static Claims parseToken(String token) {
        Key key = Keys.hmacShaKeyFor(secretKey.getBytes());
        return Jwts.parserBuilder().setSigningKey(key).build().parseClaimsJws(token).getBody();
    }
    
    /**
     * 获取用户的ID
     *
     * @param token 要解析的Token字符串
     * @return 解析出用户的ID
     */
    public static Object getSubject(String token) throws Exception {
        return parseToken(token).get("subject");
    }
    public static Object getData(String token,String key){
        Claims claims = parseToken(token);
        return claims.get(key);
    }


    
    
}
